class Solution {
public:
    int calculate(string s) {
         if (s.empty()) return 0;
         stack<int> stk;
         int num=0;
         char nsign='+';
         for(int i=0;i<s.size();i++){
             if(isdigit(s[i])){
                 num = num * 10 + int(s[i] - '0');
             }
             if(!isdigit(s[i]) && s[i] != ' ' || i==s.size()-1){
                 if(nsign=='+'){
                     stk.push(num);
                 }
                 else if(nsign=='-'){
                     stk.push(-num);
                }
                 else if(nsign=='*'){
                      int top=stk.top();
                      stk.pop();
                      stk.push(top=top*num);
                 }
                 else if(nsign=='/'){
                     int top=stk.top();
                     stk.pop();
                     stk.push(top=top/num);
                 }
             nsign=s[i];
             num=0;
             }
             
         }
              int result=0;
              while(!stk.empty()){
                   result=result+stk.top();
                   stk.pop();
              }
              return result;    
    }
};
